part of "../writer.dart";

/// 最基础的Writer，负责将某种对象写入和读取持久化存储
/// 务必要用extends扩展，不要用implement
abstract class RawableWriter<T extends Jsonable> {
  /// 获取所有里面的内容
  List<T> get all;

  /// 增减新的对象，如有重复也不会有任何删减
  void input(T object);

  /// 删除对象，并且返回是否删除成功的信息
  /// 如果删除不成功，使用者可以自行决定如何处理
  bool deleteBy(Test<T> test);

  /// 清空所有内容
  void deletAll();

  /// 根据条件查找
  T? findBy(Test<T> test);

  /// 同样根据条件查找，但找不到会报错
  T getBy(Test<T> test);
}
